package com.cool.shark.service;

import com.cool.shark.pojo.dto.BannerDTO;
import com.cool.shark.pojo.dto.BannerDeleteDTO;
import com.cool.shark.pojo.entity.Banner;
import com.cool.shark.pojo.vo.BannerStandardVO;
import com.cool.shark.pojo.vo.BannerVO;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

import java.io.IOException;
import java.util.List;

/**
 * @Name: BannerService
 * @Author: 西风残叶
 * @Date: 2024/4/9 20:23
 * @Version: 1.0
 * @TODO: 轮播图的业务接口
 */
@Transactional
public interface BannerService {
    /**
     * 插入一个Banner对象到数据库或其他存储介质中。
     *
     * @param banner 需要插入的Banner对象，包含轮播图的各种信息。
     */
    void insert(BannerDTO banner);

    /**
     * 从数据库或其他存储介质中获取所有Banner对象。
     *
     * @return 返回一个包含所有Banner对象的列表。
     */
    List<BannerVO> list();

    /**
     * 使某个对象启用。
     *
     * @param id 对象的唯一标识符。
     */
    void setEnable(int id);

    /**
     * 上传图片。
     *
     * @param multipartFile 表示上传的图片文件，是一个多部分文件对象。
     * @return 返回上传成功后的图片URL。
     * @throws IOException 如果在上传过程中发生IO异常，则抛出此异常。
     */
    String uploadImg(MultipartFile multipartFile) throws IOException;

    /**
     * 使某个对象禁用。
     *
     * @param id 对象的唯一标识符。
     */
    void setDisable(int id);
    /**
     * 根据指定的ID选择一个Banner对象。
     *
     * @param id 用于查询的Banner的唯一标识符。
     */
    BannerStandardVO select(int id);
    /**
     * 查询所有启用的轮播图信息
     *
     * @return 返回一个包含所有启用的轮播图信息的列表
     */
    List<BannerVO> listByEnable();
    /**
     * 删除图片
     *
     * @param id 幻灯片对象，包含需要删除的图片的信息。
     *                  该对象中应含有图片的标识符或其他必要的删除信息。
     */
    void delete(Integer id);
}